/*
 * controler.h
 *
 *      Author: Jerome RD Soine and Christoph A Brand
 *      Institution: Schwarz goup, Institute for Theoretical Physics, Heidelberg University, Germany
 */

#ifndef ACTIVECABLEMODEL_FA_H_
#define ACTIVECABLEMODEL_FA_H_

#include "ActiveCableModel.h"
#include <vector>

class ActiveCableModel_FA : public ActiveCableModel {
private:
	vector<unsigned int> corresponding_ft_pos;
	vector< vector<Vertex*> > vertices_at_fa;
	vector< vector<int> > sf_numbers_at_fa;
	vector< vector<int> > sf_numbers_ending_at_fa;
	virtual vector<int> init_stress_fiber_numbers_at_fa(unsigned int fa_index);
	virtual vector<int> init_stress_fiber_numbers_ending_at_fa(unsigned int fa_index);
	vector<Vertex*> init_vertices_at_fa(unsigned int fa_index);
public:
	ActiveCableModel_FA(string filename, string output_folder,
			double spring_constant, vector<double> PARAMETERS,
			vector<Ellipse*> FOCAL_ADHESIONS);
	virtual ~ActiveCableModel_FA();
	virtual void run();
	virtual ActiveCableModel_FA * clone () const;
	vector<ForceTransmission*> getForceTransmissionShapes();
	vector<int> get_stress_fiber_numbers_at_fa(unsigned int fa_index);
	vector<int> get_stress_fiber_numbers_ending_at_fa(unsigned int fa_index);
	vector<Vertex*> get_vertices_at_fa(unsigned int fa_index);
	int get_n_dorsals_at_fa(unsigned int fa_index);
	int get_n_ventrals_at_fa(unsigned int fa_index);
	int get_n_tvas_at_fa(unsigned int fa_index);
	int get_n_aeb_at_fa(unsigned int fa_index);
	int get_n_dorsals_ending_at_fa(unsigned int fa_index);
	int get_n_ventrals_ending_at_fa(unsigned int fa_index);
	int get_n_tvas_ending_at_fa(unsigned int fa_index);
	int get_n_aeb_ending_at_fa(unsigned int fa_index);
};
#endif /* ACTIVECABLEMODEL_FA_H_ */
